import { PROVIDERS } from '@shared/config/constants.ts';
import { SECRET_MODAL_CONTENT_FORM_FIELD_NAMES } from '@entities/secret-form-block/model/constants.ts';

export interface SecretFormBlockProps {
  secretType: (typeof PROVIDERS)[keyof typeof PROVIDERS];
  isAdditionalInfoDisplayed?: boolean;
}

export interface SecretFormValues {
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.SECRET_TYPE]: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.SECRET_NAME]: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.AWS_ACCESS_KEY_ID]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.AWS_SECRET_ACCESS_KEY]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.GCP_SERVICE_ACCOUNT_CONTENTS]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.DO_API_TOKEN]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.AZURE_SUBSCRIPTION_ID]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.AZURE_CLIENT_ID]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.AZURE_SECRET]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.AZURE_TENANT]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.HCLOUD_API_TOKEN]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.SSH_PRIVATE_KEY]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.USERNAME]?: string;
  [SECRET_MODAL_CONTENT_FORM_FIELD_NAMES.PASSWORD]?: string;
}

export interface SecretModalContentProps {
  secretType: string;
}
